home *** CD-ROM | disk | FTP | other *** search
- ##############################################################################
- # FormMail Version 1.5 #
- # Copyright 1996 Matt Wright mattw@misha.net #
- # Created on 6/9/95 Last Modified: 2/5/96 #
- # Scripts Found at: http://www.worldwidemart.com/scripts/ #
- ##############################################################################
- # If you run into any problems while trying to configure this scripts, help #
- # is available. The steps you should take to get the fastest results, are: #
- # 1) Read this file thoroughly #
- # 2) Consult the Matt's Script Archive Frequently Asked Questions: #
- # http://www.worldwidemart.com/scripts/faq/ #
- # 3) If you are still having difficulty installing this script, send #
- # e-mail to: scripts-help@tahoenet.com #
- # Include any error messages you are receiving and as much detail #
- # as you can so we can spot your problem. Also include the variable#
- # configuration block that is located at the top of the script. #
- # #
- # Hopefully we will be able to help you solve your problems. Thank you. #
- ##############################################################################
- # COPYRIGHT NOTICE #
- # Copyright 1996 Matthew M. Wright All Rights Reserved. #
- # #
- # FormMail may be used and modified free of charge by anyone so long as this #
- # copyright notice and the comments above remain intact. By using this #
- # code you agree to indemnify Matthew M. Wright from any liability that #
- # might arise from it's use. #
- # #
- # Selling the code for this program without prior written consent is #
- # expressly forbidden. In other words, please ask first before you try and #
- # make money off of my program. #
- ##############################################################################
-
-
- This script can be used as a universal WWW form --> E-mail gateway. There are
- just a few restrictions on the HTML Forms and what they have to have in
- them. The script works for both the POST and GET form methods.
-
- The script, FormMail.pl, needs to be placed in your server's cgi-bin and the
- anonymous WWW user must have the ability to read/execute the script. If
- you do not have access to your server's cgi-bin, yet you can execute cgi
- scripts, you may want to try adding a .cgi extension to the FormMail.pl,
- so you could move it to FormMail.cgi.
-
- Setting Up the FormMail Script:
- ===============================
-
- The FormMail.pl script does not have to be extensively configured to get
- it to work. There are only two variables in the perl file which you will
- need to define along with changing the top line of your script to match
- the location of you Perl interpreter.
-
- Necessary Variables:
- --------------------
-
- $mailprog = "/usr/lib/sendmail";
- This variable must define the location to your server's sendmail
- program. If this is incorrect, form results will not be mailed to you.
-
- @referers = ('www.worldwidemart.com','worldwidemart.com','206.31.72.203');
- This array allows you to define the domains that you will allow
- forms to reside on and use your FormMail script. If a user tries to
- put a form on another server, that is not www.worldwidemart.com, they
- will receive an error message when someone tries to fill out their form.
-
- Your formmail program is now configured.
-
- -----------------------------------------------------------------------------
-
- Form Configuration:
- ===================
-
- The action of your form needs to point towards this script (obviously), and
- the method must be POST or GET in capital letters. Version 1.5 of FormMail
- offers many new ways to code your form to tailor the resulting HTML page
- and the way the script performs. Below is a list of form fields you can
- use and how to implement them.
-
- Necessary Form Fields:
- ======================
-
- There is only one form field that you must have in your form, for
- FormMail to work correctly. This is the recipient field.
-
- Field: recipient
-
- Description: This form field allows you to specify to whom you wish for your
- form results to be mailed. Most likely you will want to configure this
- option as a hidden form field with a value equal to that of your e-mail
- address.
-
- Syntax:
-
- <input type=hidden name="recipient" value="email@your.host.xxx">
-
- -----------------------------------------------------------------------------
-
- Optional Form Fields:
- =====================
-
- Field: subject
-
- Description: The subject field will allow you to specify the subject that
- you wish to appear in the e-mail that is sent to you after this form has
- been filled out. If you do not have this option turned on, then the
- script will default to a message subject: WWW Form Submission
-
- Syntax:
-
- If you wish to choose what the subject is:
- <input type=hidden name="subject" value="Your Subject">
-
- To allow the user to choose a subject:
- <input type=text name="subject">
-
- -----------------------------------------------------------------------------
-
- Field: email
-
- Description: This form field will allow the user to specify their return
- e-mail address. If you want to be able to return e-mail to your user, I
- strongly suggest that you include this form field and allow them to fill
- it in. This will be put into the From: field of the message you receive.
-
- Syntax:
-
- <input type=text name="email">
-
- -----------------------------------------------------------------------------
-
- Field: realname
-
- Description: The realname form field will allow the user to input their
- real name. This field is useful for identification purposes and will
- also be put into the From: line of your message header.
-
- Syntax:
-
- <input type=text name="realname">
-
- -----------------------------------------------------------------------------
-
- Field: redirect
-
- Description: If you wish to redirect the user to a different URL, rather
- than having them see the default response to the fill-out form, you can
- use this hidden variable to send them to a pre-made HTML page.
-
- Syntax:
-
- To choose the URL they will end up at:
- <input type=hidden name="redirect" value="http://your.address/to/file.html">
-
- To allow them to specify a URL they wish to travel to once the form is
- filled out:
- <input type=text name="redirect">
-
- -----------------------------------------------------------------------------
-
- Field: required
-
- Version Added: 1.3
-
- Description: You can now require for certain fields in your form to be
- filled in before the user can successfully submit the form. Simply place
- all field names that you want to be mandatory into this field. If the
- required fields are not filled in, the user will be notified of what they
- need to fill in, and a link back to the form they just submitted will be
- provided.
-
- Syntax:
-
- If you want to require that they fill in the email and phone fields in
- your form, so that you can reach them once you have received the mail,
- use a syntax like:
- <input type=hidden name="required" value="email,phone">
-
- -----------------------------------------------------------------------------
-
- Field: env_report
-
- Version Added: 1.3
-
- Description: Allows you to have Environment variables included in the
- e-mail message you receive after a user has filled out your form. Useful
- if you wish to know what browser they were using, what domain they were
- coming from or any other attributes associated with environment
- variables. The following is a short list of valid environment variables
- that might be useful:
-
- REMOTE_HOST - Sends the hostname making a request.
- REMOTE_ADDR - Sends the IP address of the remote host making the request.
- REMOTE_USER - If server supports authentication and script is
- protected, this is the username they have authenticated as.
- *This is not usually set.*
- REMOTE_IDENT - If HTTP server supports RFC 931 identification, then
- this variable will be set to the remote user name
- retrieved from the server. *This is not usually set.*
- HTTP_USER_AGENT - The browser the client is using to send the request.
- General format: software/version library/version
-
- There are others, but these are a few of the most useful.
-
- Syntax:
-
- If you wanted to find the remote host and browser sending the request,
- you would put the following into your form:
- <input type=hidden name="env_report" value="REMOTE_HOST,HTTP_USER_AGENT">
-
- -----------------------------------------------------------------------------
-
- Field: sort
-
- Version Added: 1.4
-
- Description: This field allows you to choose the order in which you wish
- for your variables to appear in the e-mail that FormMail generates. You
- can choose to have the field sorted alphabetically or specify a set order
- in which you want the fields to appear in your mail message. By leaving
- this field out, the order will simply default to the order in which the
- browsers sends the information to the script (which isn't always the
- exact same order they appeared in the form.) When sorting by a set order
- of fields, you should include the phrase "order:" as the first part of
- your value for the sort field, and then follow that with the field names
- you want to be listed in the e-mail message, separated by commas.
-
- Syntax:
-
- To sort alphabetically:
- <input type=hidden name="sort" value="alphabetic">
-
- To sort by a set field order:
- <input type=hidden name="sort" value="order:name1,name2,etc...">
-
- -----------------------------------------------------------------------------
-
- Field: print_config
-
- Version Added: 1.5
-
- Description: print_config allows you to specify which of the config
- variables you would like to have printed in your e-mail message. By
- deafult, no config fields are printed to your e-mail. This is because
- the important form fields, like email, subject, etc... are included in
- the header of the message. However some users have asked for this option
- so they can have these fields printed in the body of the message. The
- config fields that you wish to have printed shoul dbe in the value
- attribute of your input tag separated by commas.
-
- Syntax:
-
- If you want to print the email and subject fields in the body of your
- message, you would place the following form tag:
- <input type=hidden name="print_config" value="email,subject">
-
- ----------------------------------------------------------------------------
-
- Field: title
-
- Version Added: 1.3
-
- Description: This form field allows you to specify the title and header
- that will appear on the resulting page if you do not specify a redirect URL.
-
- Syntax:
-
- If you wanted a title of 'Feedback Form Results':
- <input type=hidden name="title" value="Feedback Form Results">
-
- -----------------------------------------------------------------------------
-
- Field: return_link_url
-
- Version Added: 1.3
-
- Description: This field allows you to specify a URL that will appear, as
- return_link_title, on the following report page. This field will not
- be used if you have the redirect field set, but it is useful if you allow
- the user to receive the report on the following page, but want to offer
- them a way to get back to your main page.
-
- Syntax:
-
- <input type=hidden name="return_link_url"
- value="http://your.host.xxx/main.html">
-
- -----------------------------------------------------------------------------
-
- Field: return_link_title
-
- Version Added: 1.3
-
- Description: This is the title that will be used to link the user back to
- the page you specify with return_link_url. The two fields will be shown
- on the resulting form page as:
-
- <ul>
- <li><a href="return_link_url">return_link_title</a>
- </ul>
-
- Syntax:
-
- <input type=hidden name="return_link_title" value="Back to Main Page">
-
- -----------------------------------------------------------------------------
-
- Field: background
-
- Version Added: 1.3
-
- Description: This form field allow you to specify a background image
- that will appear if you do not have the redirect field set. This image
- will appear as the background to the form results page.
-
- Syntax:
-
- <input type=hidden name="background" value="http://your.host.xxx/image.gif">
-
- -----------------------------------------------------------------------------
-
- Field: bgcolor
-
- Version Added: 1.3
-
- Description: This form field allow you to specify a bgcolor for the
- form results page in much the way you specify a background image. This
- field should not be set if the redirect field is.
-
- Syntax:
-
- For a background color of White:
- <input type=hidden name="bgcolor" value="#FFFFFF">
-
- -----------------------------------------------------------------------------
-
- Field: text_color
-
- Version Added: 1.3
-
- Description: This field works in the same way as bgcolor, except that it
- will change the color of your text.
-
- Syntax:
-
- For a text color of Black:
- <input type=hidden name="text_color" value="#000000">
-
- -----------------------------------------------------------------------------
-
- Field: link_color
-
- Version Added: 1.3
-
- Description: Changes the color of links on the resulting page. Works in
- the same way as text_color. Should not be defined if redirect is.
-
- Syntax:
-
- For a link color of Red:
- <input type=hidden name="link_color" value="#FF0000">
-
- -----------------------------------------------------------------------------
-
- Field: vlink_color
-
- Version Added: 1.3
-
- Description: Changes the color of visited links on the resulting page.
- Works exactly the same as link_color. Should not be set if redirect is.
-
- Syntax:
-
- For a visited link color of Blue:
- <input type=hidden name="vlink_color" value="#0000FF">
-
- -----------------------------------------------------------------------------
-
- Field: alink_color
-
- Version Added: 1.4
-
- Description: Changes the color of active links on the resulting page.
- Works exactly the same as link_color. Should not be set if redirect is.
-
- Syntax:
-
- For a visited link color of Blue:
- <input type=hidden name="alink_color" value="#0000FF">
-
- -----------------------------------------------------------------------------
-
- Any other form fields that appear in your script will be mailed back to
- you and displayed on the resulting page if you do not have the redirect
- field set. There is no limit as to how many other form fields you can
- use with this form, except the limits imposed by browsers and your server.
-
- -----------------------------------------------------------------------------
-
- Some of the possible uses of this script are:
-
- 1) You want to have a form that will be mailed to you, but aren't sure how to
- write the scripting for it.
- 2) You are the webmaster of your site and want to allow users to use forms,
- but not to have their own cgi-bin directories, which can cause
- security risks to your system. You can set this script up and then
- allow all users to run off of it.
- 3) Want to have one script to parse all of your html forms and mail them
- to you.
-
- -----------------------------------------------------------------------------
-
- History:
- Version 1.0 6/11 - This script was created.
- Version 1.1 8/3 - A major hole in the script which allowed users to run
- commands under your server's uid was disabled, thanks
- to Paul Phillips, who noticed the error.
- - The ability to redirect the user to a specified HTML
- file after they filled out a form was added.
- Version 1.2 9/23 - If the form field is one of the required or optional
- 'special' fields, such as redirect, recipient,
- subject, email, realname, etc... the script will not
- print these fields to either your mail message or to
- the user's screen when they are returned to a generic
- form response. It helps you so that things do not
- get duplicated.
- Version 1.3 1/21 - Much needed update finally completed
- - Added form fields: env_report, bgcolor,
- background, link_color, vlink_color, title,
- text_color, return_link_title, return_link_url
- and required.
- - Security hole, which allowed any user on any
- system to bum off of your formmail script, has been
- plugged up with the @referers variable.
- - Report style in return html and e-mail touched
- up a bit.
- Version 1.4 1/23 - Added options: sort, alink_color
- - Fixed a few bugs from Version 1.3, namely the fact
- that the link_colors weren't working well.
- - FormMail now supports both the GET and POST methods.
- Version 1.5 2/5 - Sorting of Fields in E-Mail Response Fixed.
- - print_config option added.
-
- -----------------------------------------------------------------------------
- Matt Wright - (mattw@misha.net) - http://www.worldwidemart.com/scripts/
-